#ifndef JOKCRDMG_H
#define JOKCRDMG_H

#include "cardmgr.h"

//
// This class implements a "standard" deck of 52 cards + jokers
//

class JokerCardMgr : public CardMgr
{
	public:
		JokerCardMgr(int32 nDeckSize = 53);     // kharmon.  03-26-06.  #10515.  Make deck size configurable, default to 53.
		virtual ~JokerCardMgr();

        virtual void setDeckSize(int32 nDeckSize);

		virtual int32 getDeckSize();

		bool8 isJoker(uint8 Card);

		virtual uint8 getSuit(uint8 Card);
		virtual uint8 getRank(uint8 Card);

		virtual uint8 makeCard(int32 Index);

		virtual void encode(uint8 Card, uint8* Buf, int32* Used);

	public:
		enum CardSuits
		{
			SPECIAL	= 0x50
		};

		enum CardValues
		{
			JOKER  = 0x01,      // kharmon.  03-26-06.  #10515.  Can support 2 jokers now.
            JOKER2 = 0x02
		};

    private:
        int32 m_nDeckSize;  // kharmon.  03-26-06.  #10515.  Make deck size configurable, so as to allow multiple jokers.
};

inline
JokerCardMgr::JokerCardMgr(int32 nDeckSize)
{
    m_nDeckSize = nDeckSize;
}

inline
JokerCardMgr::~JokerCardMgr()
{
}

inline
void
JokerCardMgr::setDeckSize(int32 nDeckSize)
{
    m_nDeckSize = nDeckSize;
}


#endif
